package com.hbnu.controller;
import org.springframework.ui.Model;
import com.hbnu.pojo.Door;
import com.hbnu.service.DoorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.util.List;

@Controller // 声明为Spring的控制器组件
public class DoorController {

    @Autowired    // 自动注入(由spring创建当前对象并为属性赋值)
    private DoorService doorService;

    // 1. 查询所有门店信息
    @RequestMapping("/doorList")
    public String doorList(Model model) {
        // 调用service层的findAll方法，查询所有的门店信息
        List<Door> doorList = doorService.findAll();
        // 将所有门店信息的list集合存入model中，带到JSP显示
        model.addAttribute("list", doorList);
        return "door_list";
    }


    // 2. 新增门店信息
    @RequestMapping("/doorAdd")
    public String doorAdd(Door door) {
        // 1.调用service层的addDoor方法，新增门店信息
        doorService.addDoor(door);
        // 2.重定向到门店列表页面, 显示所有门店信息
        return "redirect:/doorList";
    }

    // 3. 删除门店信息
    @RequestMapping("/doorDelete")
    public String doorDelete(Integer id, RedirectAttributes redirectAttributes) {
        try {
            // 1.调用service层的deleteById方法，删除指定id的门店信息
            doorService.deleteById(id);
            // 2.重定向到门店列表页面, 显示所有门店信息
            return "redirect:/doorList";
        } catch (RuntimeException e) {
            // 捕获异常并传递提示信息给前端页面
            redirectAttributes.addFlashAttribute("errorMessage", e.getMessage());
            // 重定向到门店列表页面，并显示错误信息
            return "redirect:/doorList";
        }
    }

    // 4. 根据id查询门店信息
    @RequestMapping("/doorInfo")
    public String doorInfo(Integer id, Model model) {
        Door door = doorService.findById(id);
        model.addAttribute("door", door);
        return "door_update";
    }

    // 5. 根据id更新门店信息
    @RequestMapping("/doorUpdate")
    public String doorUpdate(Door door) {
        doorService.updateById(door);
        return "redirect:/doorList";
    }
}
